package samples;

/*
 * "CONTRACT" V.S "INTEREST" Package, Import may be not needed - Only the
 * domain knows what and how, not "CONTRACT" concept. Do not need modifier,
 * only interface can be seen. Do not need parameters, which are defined
 * inside the body (ID V.S BUSINESS KEY) Class can extend from multiple
 * class, add prefix if conflict happens.
 */

public class CompositeModel {
	interface Id {
	}
	
	interface Index {
	}

	interface Interest {
		String getEntityType();

		String EntityType = null;
		Id ID = null;
		String Role = null;
	}

	abstract class Interested implements Interest {
	}

	interface DateTime {
	}

	interface Date {
	}

	interface Key {
		String[] KeyDescription = null;
		String[] KeyValue = null;
	}

	interface context {
		String[] ContextDescription = null;
		String[] ContextValue = null;
	}

	interface root {
		String getKey();

		String getContext();

		String getEntityType();

		Id ID = null;
		DateTime LastUpdateTime = null;
		String EntityType = null;
		String BusinessKey = null;
		Boolean Indicator = null;
		Date EffectiveDate = null;
		String DefinitionID = null;
		Interested[] RelationShips = null;

		String[] index1 = { "Id", "LastUpdateTime" };

	}

	interface leaf extends root {
		String leaf = null;
	}

	interface branch extends root {
		root[] leaves = null;
		String branch = null;
	}

	abstract class menu implements branch {

	}

	abstract static class item implements leaf {

	}
}
